package org.jeecg.modules.mes.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @Description: 多订单明细合并计划创建VO
 * @Author: jeecg-boot
 * @Date: 2025-08-30
 * @Version: V2.0
 */
@Data
@ApiModel(value="MesMergedPlanCreateVO", description="多订单明细合并计划创建VO")
public class MesMergedPlanCreateVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**计划名称*/
    @ApiModelProperty(value = "计划名称")
    private String planName;

    /**订单明细ID列表*/
    @ApiModelProperty(value = "订单明细ID列表")
    private List<String> orderDetailIds;

    /**生产模板ID*/
    @ApiModelProperty(value = "生产模板ID")
    private String templateId;

    /**计划开始日期*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "计划开始日期")
    private Date planStartDate;

    /**计划结束日期*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "计划结束日期")
    private Date planEndDate;

    /**计划负责人*/
    @ApiModelProperty(value = "计划负责人")
    private String planManager;

    /**优先级(1-低,2-中,3-高)*/
    @ApiModelProperty(value = "优先级(1-低,2-中,3-高)")
    private Integer priority;

    /**备注*/
    @ApiModelProperty(value = "备注")
    private String remark;

    /**工种配置列表*/
    @ApiModelProperty(value = "工种配置列表")
    private List<WorkTypeConfigVO> workTypeConfigs;

    /**计划日期*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "计划日期")
    private Date planDate;

    /**预期开始日期*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "预期开始日期")
    private Date expectedStartDate;

    /**预期结束日期*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "预期结束日期")
    private Date expectedEndDate;

    /**工种列表*/
    @ApiModelProperty(value = "工种列表")
    private List<WorkTypeConfigVO> workTypes;

    @Data
    @ApiModel(value="WorkTypeConfigVO", description="工种配置VO")
    public static class WorkTypeConfigVO implements Serializable {
        private static final long serialVersionUID = 1L;

        /**工种ID*/
        @ApiModelProperty(value = "工种ID")
        private String workTypeId;

        /**工种编码*/
        @ApiModelProperty(value = "工种编码")
        private String workTypeCode;

        /**工种名称*/
        @ApiModelProperty(value = "工种名称")
        private String workTypeName;

        /**协作类型(0-单人,1-多人协作)*/
        @ApiModelProperty(value = "协作类型(0-单人,1-多人协作)")
        private Integer collaborationType;

        /**最大参与人数*/
        @ApiModelProperty(value = "最大参与人数")
        private Integer maxParticipants;

        /**是否允许部分领取(0-否,1-是)*/
        @ApiModelProperty(value = "是否允许部分领取(0-否,1-是)")
        private Integer allowPartialClaim;

        /**预计工时*/
        @ApiModelProperty(value = "预计工时")
        private Integer estimatedHours;

        /**序号*/
        @ApiModelProperty(value = "序号")
        private Integer sequence;

        /**任务数量*/
        @ApiModelProperty(value = "任务数量")
        private Integer taskQuantity;
    }
}
